package com.itheima.health.config;

import com.itheima.health.job.ClearImgJob;
import lombok.extern.slf4j.Slf4j;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Slf4j
@Configuration
public class QuartzConfig {

    // 创建一个封装Job对象的类型JobDetail
    // 使用@Bean注解标记的方法将这个对象保存到Spring容器
    @Bean
    public JobDetail clearImgJobDetail() {
        log.info("创建清理图片的 JobDetail");

        return JobBuilder
                .newJob(ClearImgJob.class) // newJob方法就是在绑定要运行的Job接口实现类
                .withIdentity("abcJobDetail") // 给当前JobDetail对象起名字, 名字任意
                .storeDurably() // 即使没有触发器绑定当前JobDetail对象, 也不会被删除
                .build();
    }

    // 下面是触发器的声明,设置job的运行时机
    // 使用@Bean注解标记的方法将这个对象保存到Spring容器
    @Bean
    public Trigger clearImgTrigger() {
        log.info("创建清理图片的 Trigger");

        // 定义Cron表达式
        CronScheduleBuilder cron = CronScheduleBuilder.cronSchedule("0/50 * * * * ?");

        return TriggerBuilder
                .newTrigger() // 创建触发器
                .forJob(clearImgJobDetail()) // 绑定要运行的JobDetail对象
                .withIdentity("abcTrigger")  // 给当前Trigger对象起名字, 名字任意
                .withSchedule(cron) // 绑定cron表达式
                .build();
    }
}